1. Field of the Invention
Embodiments of the present invention generally relate to processor-based emulation integrated circuits, and more particularly, to a method and apparatus for coupling data between processor-based emulation integrated circuits.
2. Description of the Related Art
Hardware emulators are programmable devices used in the verification of hardware designs. A common method of hardware design verification uses processor-based hardware emulators to emulate the design. These processor-based emulators sequentially evaluate combinatorial logic levels, starting at the inputs and proceeding to the outputs. Each pass through the entire set of logic levels is known as a cycle; the evaluation of each individual logic level is known as an emulation step.
An exemplary hardware emulator is described in commonly assigned U.S. Pat. No. 6,618,698 titled “Clustered Processors In An Emulation Engine”, which is hereby incorporated by reference in its entirety. Hardware emulators allow engineers and hardware designers to test and verify the operation of an integrated circuit, an entire board of integrated circuits, or an entire system without having to first physically fabricate the hardware.
A hardware emulator generally comprises a computer workstation for providing emulation support facilities, i.e., emulation software, a compiler, and a graphical user interface to allow a person to program the emulator, and an emulation engine for performing the emulation. The emulation engine is comprised of at least one emulation board, and each emulation board contains individual emulation circuits. Each individual emulation circuit contains multiple emulation processors, and each emulation processor is capable of mimicking a logic gate. Thus, the hierarchy of the emulation engine is an emulation board, multiple emulation integrated circuits, and multiple processors that are part of each emulation integrated circuit.
Processors within an emulation integrated circuit (also referred to herein as emulation chips) are connected to each other via a shared memory known as a data array. These interconnected processors are sometimes referred to as a cluster of processors. Each processor within the cluster can access the output of any other processor, and can also access any output that is available in the data array.
Emulation chips, typically integrated circuits, on an emulation board are capable of communicating with each other via signal wires between each chip. Emulation chips can only communicate with other emulation chips, and can only receive data currently transmitted from another emulation chip, i.e., the emulation chip receiving the data does not have full access to all of the data within the emulation chip transmitting the data. Thus, communication between emulation chips is not as efficient as communication between processors within an emulation chip because extra emulation steps, i.e., requesting data from another chip, the other chip fetching the requested data, transmitting the requested data to the chip that requested the data, and finally processing the requested data, are required
Emulation boards are only capable of communicating with another emulation board via a cable connector. Communication between emulation boards is less efficient than communication between emulation chips. The cable connector typically connects two emulation chips, one emulation chip on each emulation board that is joined by the cable connector. Sharing data between emulation boards requires routing the data to be shared from an emulation chip to the emulation chip connected to the cable connector. The cable connector then provides the data to the emulation chip on the other board that is also connected to the cable connector. The emulation chip on the other board can then share the data with the other emulation chips on that emulation board. The process of sharing data between emulation boards requires coordination between both emulation boards, and also between emulation chips. The entire process of sharing data between emulation boards generally requires more emulation steps than is required to share data between emulation chips and hence is less efficient than communication between emulation chips.
The computation efficiency of the emulation engine may be increased by increasing the number of processors within an emulation chips. As the number of processors within the emulation chip increases, the size and the cost of the emulation chip increases. Larger emulation chips that contain more processors are more expensive to manufacture than smaller emulation chips because they are produced at a lower yield. Very often, the resulting increase in performance that accompanies a larger emulation chip, i.e., an emulation chip containing more processors, is cost-prohibitive.
Thus, there is a need in the art for an emulation chip that contains an increased number of processors that is not cost-prohibitive.